package cn.iocoder.yudao.module.book.service.bookshelf;

import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.module.book.controller.admin.bookshelf.vo.*;
import cn.iocoder.yudao.module.book.controller.app.bookcase.vo.AppBooksRespVO;
import cn.iocoder.yudao.module.book.controller.app.bookcase.vo.AppBookshelfRespVO;
import cn.iocoder.yudao.module.book.controller.app.booksShell.vo.AppCollectionsRespVO;
import cn.iocoder.yudao.module.book.controller.app.category.vo.AppzdyReqVO;
import cn.iocoder.yudao.module.book.dal.dataobject.bookshelf.BookshelfDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 书架 Service 接口
 *
 * @author xi
 */
public interface BookshelfService {

    /**
     * 创建书架
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createshelf( BookshelfSaveReqVO createReqVO);

    /**
     * 更新书架
     *
     * @param updateReqVO 更新信息
     */
    void updateshelf( BookshelfSaveReqVO updateReqVO);

    /**
     * 删除书架
     *
     * @param id 编号
     */
    void deleteshelf(Integer id);

    /**
     * 获得书架
     *
     * @param id 编号
     * @return 书架
     */
    BookshelfDO getshelf(Integer id);

    /**
     * 获得书架分页
     *
     * @param pageReqVO 分页查询
     * @return 书架分页
     */
    PageResult<BookshelfDO> getshelfPage(BookshelfPageReqVO pageReqVO);

    List<AppBookshelfRespVO> getAll( Integer userId);

    Boolean deletes( Long userId,  Integer bookId);

    List<BookshelfDO> selectAll();

    List<AppBooksRespVO> getByCollectionId( Integer id);

    Boolean deleteByBookId( Long userId, Integer id);

    Boolean deleteByCollectionId( Long userId, Integer id);

    Boolean markGroupTop(  Long userId, Integer id);

//    void addBook(Integer bookId, Integer collectionId,  Integer userId);

    Boolean addBook( Integer bookId, Integer collectionId, Integer userId,String time);

    List<AppBookshelfRespVO> selectByUserId(Long userId);

    List<BookshelfDO> selectByCategoryId(Long userId, Integer id);


    List<AppzdyReqVO> selectAllByCategoryIdAndClassifyId(Integer id, Integer classifyId);

    List<AppCollectionsRespVO> selectAllCollectionsByClassfiId(Integer id);

    List<AppBooksRespVO> getdraftByCollectionId(Integer setId);
}
